//
//  main.cpp
//  random
//
//  Created by chenyh on 2021/2/19.
//

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <string.h>
using namespace std;
#define MAX 101
//【例 4-1】 用随机函数生成 100 个数，设计程序统计个位上是 0,1,2,3,4,5,6,7,8,9 的数字 分别有多少?

/**
 【分析】这道题是一道基本的算法题。利用 C++中的随机函数生成 100 个随机数，关 键问题是如何得到每个数的个位数字。我们知道数字是按十进制组成的，对每个数字除以 10，所得的余数就是该数字个位上的数。比如 123，对 10 进行求余运算，即求模运算，得 到 123%10=3。那么 3 就是数字 123 个位上的数字。具体的实现代码如下:
 */



/**处理输入函数*/
void input(int num[])
{
    int i;
    srand((unsigned)time(NULL));//设置随机种子
    for (i = 1; i < MAX; i++) {
        num[i] = rand()%100;    //生成100以内的随机数
    }
}

/**输出函数*/
void output(int num[])
{
    int i;
    for (i=1; i<MAX; i++) {
        cout<<num[i]<<" ";
        if (0==i%10) {
            cout<<endl;
        }
    }
    cout<<endl;
}

/**统计数字个数*/
void cal_num(int num[],int count[])
{
    int i,mod;
    for (i=1; i<MAX; i++) {
        mod=num[i]%10;
        count[mod]++;
    }
    
}


int main(int argc, const char * argv[]) {
    
    int num[MAX];
    int i,count[10];
    memset(count, 0, 10*sizeof(int));//i初始化数组
    for (i = 0; i < 10; i++) {
        cout<<i<<":"<<count[i]<<endl;
    }
    
    cout<<"------------"<<endl;
    input(num);
    cout<<"100 num:"<<endl;
    output(num);
    cal_num(num, count);
    for (i = 0; i < 10; i++) {
        cout<<i<<":"<<count[i]<<endl;
    }
    return 0;
    
    
    
    return 0;
}
